package com.atde._03_creational_design_patterns.singleton.type08;


/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._03_creational_design_patterns.singleton.type08
 * @Author: Del
 * @CreateTime: 2025-05-31  16:54
 * @Description: 单例模式 - 枚举
 * @Version: 1.0
 */
public class SingletonTest08 {
    public static void main(String[] args) {
        Singleton instance = Singleton.INSTANCE;
        Singleton instance1 = Singleton.INSTANCE;
        System.out.println(instance == instance1);
        System.out.println(instance.hashCode());
        System.out.println(instance1.hashCode());
        instance.sayOk();
    }
}


/**
 * 使用枚举，可以实现单例（推荐）
 * 1）借助 JDK1.5 添加的枚举来实现单例模式，不仅能够避免多线程同步问题
 * 而且还能防止反序列化重新创建新的对象
 * 2）这方式是Effective Java 中推荐的单例实现方式
 * 3）结论：推荐使用
 */
enum Singleton {
    INSTANCE; // 枚举类中只有一个枚举实例

    public void sayOk() {
        System.out.println("ok");
    }
}
